﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace TraceInspector.Model
{
    public class Inspection : ModelBase
    {
        private int? designPressure;

        public int? DesignPressure
        {
            get { return designPressure; }
            set
            {
                if (value >= 0)
                {
                    designPressure = value;
                    RaisePropertyChanged("DesignPressure");
                }

            }
        }
        //
        // Сводка:
        //     в поле хранится диаметр трубы
        private int? diam;

        public int? Diam
        {
            get { return diam; }
            set
            {
                if (value >= 0)
                {
                    diam = value;
                    RaisePropertyChanged("Diam");
                }

            }
        }
        //
        // Сводка:
        //     в поле хранится дата проведения обследования
        private DateTime? inspDate;

        public DateTime? InspectionDate
        {
            get { return inspDate; }
            set
            {
                if (value != null)
                {
                    inspDate = value;
                    RaisePropertyChanged("InspectionDate");
                }
            }
        }
        //
        // Сводка:
        //     mg_id из таблицы inspect
        private int mg_id;
        //
        // Сводка:
        //     в поле хранится дата постройки магистрального газопровода
        private DateTime? mgConstrDate;

        public DateTime? MgConstrDate
        {
            get { return mgConstrDate; }
            set
            {
                if (value != null)
                {
                    mgConstrDate = value;
                    RaisePropertyChanged("MgConstrDate");
                }
            }

        }
        //
        // Сводка:
        //     в поле хранится текстовая разная информация об обследовании
        private string misc;

        public string Misc
        {
            get { return misc; }
            set { misc = value; RaisePropertyChanged("Misc"); }
        }

        //
        // Сводка:
        //     place_id из таблицы inspect
        private int? place_id;
        //
        // Сводка:
        //     в поле хранится состояние обследования
        private short? state;

        public short? State
        {
            get { return state; }
            set { state = value; RaisePropertyChanged("State"); }
        }
        //
        // Сводка:
        //     в поле хранится рабочее давление магистрального газопровода
        private int? workPressure;

        public int? WorkPressure
        {
            get { return workPressure; }
            set { if (value >= 0) { workPressure = value; RaisePropertyChanged("WorkPressure"); } }
        }

        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; RaisePropertyChanged("Id"); }
        }

        private MG mg;
        public MG InspectionMg { get { return mg; } set { if (value != null) { mg = value; RaisePropertyChanged("InspectionMg"); } } }

        private Place place;
        public Place InspectionPlace { get { return place; } set { if (value != null) { place = value; RaisePropertyChanged("InspectionPlace"); } } }

        private ObservableCollection<Launch> launches;

        public ObservableCollection<Launch> Launches
        {
            get { return launches; }
            set { if (value != null) { launches = value; RaisePropertyChanged("Launches"); } }
        }

        private ObservableCollection<ModelBase> traceObjects;

        public ObservableCollection<ModelBase> TraceObjects
        {
            get { return traceObjects; }
            set
            {
                if (value != null)
                {
                    traceObjects = value;
                    RaisePropertyChanged("TraceObjects");
                } 
            }
        }

        private ObservableCollection<Report> reports;

        public ObservableCollection<Report> Reports
        {
            get { return reports; }
            set { if (value != null) { reports = value; RaisePropertyChanged("Reports"); } }
        }

    }
}
